package xj.utils;

import java.security.MessageDigest;
import java.util.Arrays;

public class Sha1 {
	
	public static String getSha1(String str){
	    if (null == str || 0 == str.length()){
	        return null;
	    }
	    char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
	            'a', 'b', 'c', 'd', 'e', 'f'};
	    try {
	        MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
	        mdTemp.update(str.getBytes("UTF-8"));
	         
	        byte[] md = mdTemp.digest();
	        int j = md.length;
	        char[] buf = new char[j * 2];
	        int k = 0;
	        for (int i = 0; i < j; i++) {
	            byte byte0 = md[i];
	            buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
	            buf[k++] = hexDigits[byte0 & 0xf];
	        }
	        return new String(buf);
	    } catch (Exception e) {
	        e.printStackTrace();
	        return null;
	    } 
	}
	
	public static void main(String[] args) {
//		String signature = "f9003dbede815a6e6e42dfe2819f51202d58c8b0";
		String timestamp = "1554460126";
		String nonce = "596928772";
		String token = "xjjjkj888token666";
		
		String[] s = new String[3];
		s[0] = token;
		s[1] = timestamp;
		s[2] = nonce;
		Arrays.sort(s);
		String s1 = "";
		for (String str : s) {
			s1 += str;
		}
		System.out.println("加密前：" + s1);
		System.out.println("加密后：" + Sha1.getSha1(s1));
		
//	    SortedMap<Object, Object> params = new TreeMap<Object, Object>();
//	    params.put("token", token);
//	    params.put("timestamp", timestamp);
//	    params.put("nonce", nonce);
//	    StringBuffer sb = new StringBuffer();
//		Iterator it = params.entrySet().iterator();
//		while (it.hasNext()) {
//			Map.Entry entry = (Map.Entry) it.next();
//			String v = (String) entry.getValue();
//			System.out.println(((String) entry.getKey()) + "-->" + v);
//			sb.append(v);
//		} 
//		System.out.println("加密前：" + sb.toString());
//		String sh1Result = Sha1.getSha1(sb.toString());
//		System.out.println("加密后：" + sh1Result);
	}
}
